%{
#include <stdlib.h>
#include <stdio.h>
#include "y.tab.h"

extern YYSTYPE yylval;

%}
%%
(\\[<>\| \\\\]|[^ &<>\|\\\n])+	    { yylval.str = strdup(yytext); return STRING; }
\|					                { yylval.str = strdup(yytext); return PIPE; }
\<0[ ]|\<			                { yylval.str = strdup(yytext); return RED_INPUT; }
([ ]1)?\>			                { yylval.str = strdup(yytext); return RED_OUTPUT; }
([ ]1)?\>\>			                { yylval.str = strdup(yytext); return RED_OUTPUT_APPEND; }
[ ]&\>                              { yylval.str = strdup(yytext); return RED_OUTPUT_BOTH;  }
[ ]&\>\>			                { yylval.str = strdup(yytext); return RED_OUTPUT_BOTH_APPEND; }
[ ]2\>				                { yylval.str = strdup(yytext); return RED_ERR; }
[ ]2\>\>			                { yylval.str = strdup(yytext); return RED_ERR_APPEND; }
&				                    { yylval.str = strdup(yytext); return AMP; }
.				                    ; 

%%

